白話來說集成也就是組合多個弱學習器(弱分類器)以構建一個強學習器從而提升模型的性能~~~重要重要重要
初始化:給每個樣本分配相等的權重,初始分布為均勻分布。
叠代訓練:在每一輪叠代中,構建一個弱學習器,它嘗試最小化當前分布下的誤差。
更新樣本權重:根據上一輪的弱學習器對樣本進行預測,對分類錯誤的樣本增加權重,對分類正確的樣本減小權重。
組合弱學習器:將多個弱學習器的預測結果進行加權組合,得到最終的強學習器。
初始化:給每個樣本分配相等的權重,初始分布為均勻分布。
叠代訓練:在每一輪叠代中,構建一個弱學習器,它嘗試最小化當前分布下的誤差。
更新樣本權重:根據上一輪的弱學習器對樣本進行預測,對分類錯誤的樣本增加權重,對分類正確的樣本減小權重。
計算學習器權重:根據弱學習器的分類準確率計算其權重,準確率高的學習器會獲得更高的權重。
組合弱學習器:將多個弱學習器的預測結果進行加權組合,得到最終的強學習器。
AdaBoost 的一個關鍵特點是它在每一輪叠代中會調整樣本的權重,使得之前分類錯誤的樣本在下一輪中更受關注,從而提高模型對錯誤樣本的分類能力。
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 載入鳶尾花數據集
iris = load_iris()
X, y = iris.data, iris.target
# 將數據集劃分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 初始化AdaBoost分類器
adaboost_model = AdaBoostClassifier(n_estimators=50, random_state=42)
# 在訓練集上訓練模型
adaboost_model.fit(X_train, y_train)
# 在測試集上進行預測
y_pred = adaboost_model.predict(X_test)
# 計算準確度
accuracy = accuracy_score(y_test, y_pred)
print(f'準確度:{accuracy}')